home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / MISC.SWG / 0088_Min-Max Words or Integers.pas < prev    next >
Pascal/Delphi Source File  |  1994-02-03  |  2KB  |  60 lines

  1.  
  2. {$S-,R-}
  3. UNIT MaxMinW;
  4. (*
  5.   The source code for the MaxMinW unit is released to the public domain.
  6.   No rights are reserved.  Phil Nickell.  NSoft Co.
  7.   This Turbo Pascal unit implements four highly optimized assembly
  8.   language functions that provide MAX() and MIN() for unsigned words and
  9.   signed integers
  10. *)
  11. INTERFACE
  12.    function  MAXW  (a,b:word)    : Word;          { max word }
  13.    function  MINW  (a,b:word)    : Word;          { min word }
  14.    function  MAXI  (a,b:integer) : Integer;       { max integer }
  15.    function  MINI  (a,b:integer) : Integer;       { min integer }
  16.  
  17. IMPLEMENTATION
  18. function maxw(a,b:word):word; Assembler;
  19.   Asm
  20.         mov     ax, a       { first parm in ax }
  21.         mov     dx, b       { second parm in dx }
  22.         cmp     ax, dx      { compare parms }
  23.         jae     @1          { return 1st parm }
  24.         mov     ax, dx      { return 2nd parm }
  25.   @1:
  26.   End;
  27.  
  28. function minw(a,b:word):word; Assembler;
  29.   Asm
  30.         mov     ax, a       { first parm in ax }
  31.         mov     dx, b       { second parm in dx }
  32.         cmp     ax, dx      { compare parms }
  33.         jbe     @1          { return 1st parm }
  34.         mov     ax, dx      { return 2nd parm }
  35.   @1:
  36.   End;
  37.  
  38. function maxi(a,b:integer):integer; Assembler;
  39.   Asm
  40.         mov     ax, a       { first parm in ax }
  41.         mov     dx, b       { second parm in dx }
  42.         cmp     ax, dx      { compare parms }
  43.         jge     @1          { return 1st parm }
  44.         mov     ax, dx      { return 2nd parm }
  45.   @1:
  46.   End;
  47.  
  48. function mini(a,b:integer):integer; Assembler;
  49.   Asm
  50.         mov     ax, a       { first parm in ax }
  51.         mov     dx, b       { second parm in dx }
  52.         cmp     ax, dx      { compare parms }
  53.         jle     @1          { return 1st parm }
  54.         mov     ax, dx      { return 2nd parm }
  55.   @1:
  56.   End;
  57.  
  58. Begin {INITIALIZATION}
  59. End.
  60.